#ifndef __SHIPCOLLISION_H__
#define __SHIPCOLLISION_H__

// #include <iostream>
#include <QtCore>

namespace ns_yht
{
	class ShipCollision
	{
	public:
		// 传入本船速度（节）、本船航向（度）、本船经度、本船纬度、目标船速度（节）、目标船航向（度）、目标船经度、目标船纬度
		// 返回数据：会遇最近距离Dcpa（海里），到达会遇最近点的时间Tcpa（分钟），是否会遇IsDisplay
		static bool CollisionCheck(double osSpeed, double osAngle, double osLon, double osLat, double otSpeed, double otAngle, double otLon, double otLat, double &Dcpa, double &Tcpa);

		// 传入本船速度（节）、本船航向（度）、目标船速度（节）、目标船航向（度）、本船看目标船的方位b0（度），两船间的距离distance（海里）
		// 返回数据：会遇最近距离Dcpa（海里），到达会遇最近点的时间Tcpa（分钟），是否会遇IsDisplay
		static bool CollisionCheck(double osSpeed, double osAngle, double otSpeed, double otAngle, double b0, double distance, double &Dcpa, double &Tcpa);
		static bool CollisionCheck_Radians(double osSpeed, double osAngle, double otSpeed, double otAngle, double b0, double distance, double &Dcpa, double &Tcpa);

		/**
		 * @brief
		 *
		 * @param osSpeed
		 * @param osAngle
		 * @param osLon
		 * @param osLat
		 * @param osTime	本船信息获取时间，秒
		 * @param otSpeed
		 * @param otAngle
		 * @param otLon
		 * @param otLat
		 * @param otTime	目标船信息获取时间，秒
		 * @param Dcpa
		 * @param Tcpa
		 * @param IsDisplay
		 */
		static bool CollisionCheck(double osSpeed, double osAngle, double osLon, double osLat, qint64 osTime, double otSpeed, double otAngle, double otLon, double otLat, qint64 otTime, double &Dcpa, double &Tcpa);

		// meetDis:设定的会遇距离，米    meetTime:会遇时间,分钟
		// static bool meetCheck(double osSpeed, double osAngle, double osLon, double osLat, qint64 osTime, double otSpeed, double otAngle, double otLon, double otLat, qint64 otTime, double meetDis, double &meetDcpa, double &meetTime);

		// 传入本船速度（节）、本船航向（度）、目标船速度（节）、目标船航向（度）, 计算本船相对与目标船的速度矢量
		static void getRelativedSpeed(double osSpeed, double osAngle, double otSpeed, double otAngle, double &relativedSpeed, double &relativeddAngle);
	};
}
#endif
